package com.springapp.controller;


import com.springapp.connexion.SessionBean;
import com.springapp.model.Utilisateur;
import com.springapp.service.impl.CommandeService;
import com.springapp.service.impl.UtilisateurService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpSession;

/**
 * Created by Thomas on 29/03/14.
 *
 */

@Controller
//@Scope("session")
public class ControlDispatchSession {
private String sRefComd;
    @Autowired
    private SessionBean sessionBean;

    private Utilisateur utilisateurModel;
    @Autowired
    private CommandeService commandeService;

    @Autowired
    private UtilisateurService utilisateurService;

    @RequestMapping(value="/dispatch",method = RequestMethod.POST)
    public ModelAndView doLogin(@RequestParam("sMatricule") String sMatricule, @RequestParam("sPassword") String sPassword, HttpSession session) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
        String sJSPName = "login";

        ModelAndView model;


        //on instancie un utilisateur uniquement avec son Login et Mdp
        utilisateurModel = new Utilisateur(sMatricule,sPassword);

        //On appel la méthode pour vérifier le login
        if(utilisateurService.UtilisateurValide(utilisateurModel) != null)
        {
            Utilisateur util_valid = utilisateurService.UtilisateurValide(utilisateurModel);



            switch (util_valid.geteIDProfil())
            {
                case 3://UserReappro
                case 2:
                case 9:
                    sJSPName ="login_Reappro_mobile";
                    break;
                case 5://UserPrepa
                case 4://CarPrepa
                    sJSPName ="login_Prepa_mobile";

                    break;
                default:
                    break;
            }

            //On récupère l'url d'accueil pour chque type d'utilisateur
            util_valid.setJSPNameDispatch(sJSPName);

            //On injecte l'utilisateur dans le Session Bean
            sessionBean.setUtilisateurFromSession(util_valid);

            model = new ModelAndView(sJSPName);
            model.addObject("sNom", util_valid.getsNomUtil());
            model.addObject("sPrenom", util_valid.getsPrenomUtil());
            model.addObject("sZone", util_valid.getsZone());
            model.addObject("sMessage", "");
            model.addObject("sIDProfil",util_valid.geteIDProfil());
        }else
        {
            model = new ModelAndView(sJSPName);
            model.addObject("sMessage", "Identification Incorrecte.");
        }

        return model;
    }

    @RequestMapping("/getJspDispatch")
    public String getJSPDispatch(){
        return sessionBean.getUtilisateurFromSession().getJSPNameDispatch();
    }


}
